﻿Imports BLL
Imports EntitiesLayer

'---------------------------------------> Clase creada por Diego Barillas <----------------------------------------

Public Class frmConsultarEjercicios

    Public numero As Integer 'Variable que almacena la fila seleccionada del dataGrid

    Public Sub frmConsultarEjercicios_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        '-------------- Aca se carga el dataGrid y se le dan las propiedades--------------------------
        tblEjercicios.DataSource = objGestor.listarEjercicios()

        tblEjercicios.Columns(0).Visible = False
        tblEjercicios.Columns(4).Visible = False
        tblEjercicios.Columns(5).Visible = False
        tblEjercicios.Columns(7).Visible = False
        tblEjercicios.Columns(8).Visible = False
        tblEjercicios.Columns(9).Visible = False
        'tblEjercicios.Columns(10).Visible = False
        tblEjercicios.Columns(1).HeaderText = "Nombre común"
        tblEjercicios.Columns(2).HeaderText = "Nombre opcional"
        tblEjercicios.Columns(3).HeaderText = "Código"
        tblEjercicios.Columns(6).HeaderText = "Músculo principal"

        tblEjercicios.Columns(1).Width = 300
        tblEjercicios.Columns(2).Width = 300
        tblEjercicios.Columns(3).Width = 200
        tblEjercicios.Columns(6).Width = 490


    End Sub


    Private Sub btnRegistrarEjercicio_Click(sender As Object, e As EventArgs) Handles btnRegistrarEjercicio.Click
        FrmPrincipal.AddOwnedForm(frmTransparente)
        Dim frm As New frmRegistrarEjercicio
        frm.Dock = DockStyle.Fill

        frmTransparente.AgregarContenido(frm)
        frmTransparente.Show()

    End Sub

    '-----------------------------Metodo para filtrar el dataGrid--------------------------------------------------
    Private Sub txtFiltrarTabla_TextChanged(sender As Object, e As EventArgs) Handles txtFiltrarTabla.TextChanged

        Dim texto As String = txtFiltrarTabla.Text 'guarda el valor escrito en el textBox
        Dim lista As IEnumerable = objGestor.filtrarListaEjercicios(texto) 'llama el metodo filtrarLista del gestor que devuelve una lista de ejercicios
        tblEjercicios.DataSource = lista 'Carga la lista en el dataGrid

        'validación para que si la lista contiene un valor muestre el data grid con las propiedades
        If lista IsNot Nothing Then
            tblEjercicios.Columns(0).Visible = False
            tblEjercicios.Columns(4).Visible = False
            tblEjercicios.Columns(5).Visible = False
            tblEjercicios.Columns(7).Visible = False
            tblEjercicios.Columns(8).Visible = False
            tblEjercicios.Columns(9).Visible = False
            'tblEjercicios.Columns(10).Visible = False
            tblEjercicios.Columns(1).HeaderText = "Nombre común"
            tblEjercicios.Columns(2).HeaderText = "Nombre opcional"
            tblEjercicios.Columns(3).HeaderText = "Código"
            tblEjercicios.Columns(6).HeaderText = "Músculo principal"

            tblEjercicios.Columns(1).Width = 300
            tblEjercicios.Columns(2).Width = 300
            tblEjercicios.Columns(3).Width = 200
            tblEjercicios.Columns(6).Width = 490

            'si la lista no contiene ningun ejercicio no muestra el dataGrid
        Else
            tblEjercicios.DataSource = Nothing

        End If
    End Sub

    Private Sub btnInfoEjercicio_Click(sender As Object, e As EventArgs) Handles btnInfoEjercicio.Click

        Me.Controls.Clear()
        Dim frm As New Control
        frm = New frmInformacionEjercicio
        frm.Dock = DockStyle.Fill
        Me.Controls.Add(frm)

        Dim ejercicio As Ejercicio = objGestor.buscarEjercicio(tblEjercicios.Item(0, numero).Value)  'Carga el ejercicio seleccionado en el data grid

        'recorre los textBox del user control informacionEjercicio y setea la información
        For Each x As frmInformacionEjercicio In Me.Controls.OfType(Of frmInformacionEjercicio)()
            For Each y As TextBox In x.Controls.OfType(Of TextBox)()
                If (y.Name = "txtCodigo") Then
                    y.Text = ejercicio.Codigo
                ElseIf (y.Name = "txtNombreComun") Then
                    y.Text = ejercicio.NombreComun
                ElseIf (y.Name = "txtNombreOpcional") Then
                    y.Text = ejercicio.NombreOpcional
                ElseIf (y.Name = "txtMusculoPrincipal") Then
                    y.Text = ejercicio.MusculoPrincipal
                End If

            Next
            '----------------------------------------------------------------------------------------------------------------------

            'recorre los richTextBox del user control informacionEjercicio y setea la información
            For Each y As RichTextBox In x.Controls.OfType(Of RichTextBox)()
                If (y.Name = "txtErrores") Then
                    y.Text = ejercicio.ErroresComunes
                ElseIf (y.Name = "txtIndicaciones") Then
                    y.Text = ejercicio.IndicacionesGenerales
                End If

            Next

            'recorre los pictureBox del user control informacionEjercicio y setea la información
            For Each y As PictureBox In x.Controls.OfType(Of PictureBox)()
                If (y.Name = "pxbPosicionInicial") Then
                    Dim imagen As Image

                    imagen = BytesToImagen(ejercicio.PosicionInicial)
                    y.Image = imagen
                ElseIf (y.Name = "pxbPosicionFinal") Then
                    y.Image = BytesToImagen(ejercicio.PosicionFinal)
                End If

            Next
            Dim lista As IEnumerable = objGestor.consultarMusculosAsociados(tblEjercicios.Item(0, numero).Value) 'carga la lista de musculos asociados al ejercicio seleccionado

            For Each y As DataGridView In x.Controls.OfType(Of DataGridView)()
                If (y.Name = "tblMusculos") Then
                    y.DataSource = lista
                    y.Columns(0).Visible = False
                    y.Columns(1).Width = 200
                    y.Columns(2).Width = 200
                    y.Columns(3).Width = 200
                    y.Columns(4).Width = 200
                    y.Columns(5).Width = 157

                End If

            Next


        Next

    End Sub



    Private Sub tblEjercicios_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles tblEjercicios.CellClick

        numero = tblEjercicios.CurrentRow.Index 'se guarda en la variable la fila seleccionada del dataGrid

    End Sub


    Private Sub btnModificar_Click(sender As Object, e As EventArgs) Handles btnModificar.Click

        Dim ejercicioSeleccionado As Ejercicio = objGestor.buscarEjercicio(tblEjercicios.Item(0, numero).Value) 'carga el ejercicio seleccionado en el dataGrid


        FrmPrincipal.AddOwnedForm(frmTransparente) 'agregar el form transparente al form principal
        Dim frmModificarEjercicios As New frmModificarEjercicio 'crea una instancia del form modificar ejercicios
        frmModificarEjercicios.Dock = DockStyle.Fill

        'Mostrar los datos del form frmModificarEjercicio
        frmModificarEjercicios.txtCodigo.Text = ejercicioSeleccionado.Codigo
        frmModificarEjercicios.txtNombreComun.Text = ejercicioSeleccionado.NombreComun
        frmModificarEjercicios.txtNombreOpcional.Text = ejercicioSeleccionado.NombreOpcional
        frmModificarEjercicios.txtErroresComunes.Text = ejercicioSeleccionado.ErroresComunes
        frmModificarEjercicios.txtIndicaciones.Text = ejercicioSeleccionado.IndicacionesGenerales
        frmModificarEjercicios.txtIdEjercicio.Text = ejercicioSeleccionado.Id

        For Each musculo As Musculo In objGestor.listaMusculos 'recorre la lista de musculos
            frmModificarEjercicios.cmbMusculos.Items.Add(musculo.Nombre) 'muestra en el combobox el nombre del ejercicio
        Next
        frmModificarEjercicios.cmbMusculos.Text = ejercicioSeleccionado.MusculoPrincipal
        frmModificarEjercicios.cmbMusculos.DisplayMember = ejercicioSeleccionado.MusculoPrincipal

        'Mostrar los datos del form frmModificarImagenesEjercicio
        Dim frmModificarImagenesEjercicios As New frmModificarImagenesEjercicio 'crea una instancia del form modificar imagenes de ejercicios
        frmModificarImagenesEjercicios.Dock = DockStyle.Fill
        frmTransparente.AgregarContenido(frmModificarImagenesEjercicios) 'agrega el form modificar imagenes ejercicio al form transparente
        frmModificarImagenesEjercicios.Visible = False 'pone el control invisible

        frmModificarImagenesEjercicios.picBoxPosicionInicial.Image = BytesToImagen(ejercicioSeleccionado.PosicionInicial) 'carga la imagen de la base de datos en el form de modificar imagen
        frmModificarImagenesEjercicios.picBoxPosicionFinal.Image = BytesToImagen(ejercicioSeleccionado.PosicionFinal) 'carga la imagen de la base de datos en el form de modificar imagen

        'Mostrar los datos del form frmModificarAsociarMusculosAejercicio
        Dim frmModificarAsociarMusculosAEjercicios As New frmModificarAsociarMusculosAEjercicio 'crea una instancia del form modificar la asociacion de musculos a ejercicios
        frmModificarAsociarMusculosAEjercicios.Dock = DockStyle.Fill
        frmTransparente.AgregarContenido(frmModificarAsociarMusculosAEjercicios) 'agrega el form modificar la asociacion de musculos a ejercicios al form transparente
        frmModificarAsociarMusculosAEjercicios.Visible = False 'pone el control invisible

        Dim lista As IList = objGestor.consultarMusculosAsociados(tblEjercicios.Item(0, numero).Value) 'carga la lista de musculos asociados al ejercicio seleccionado
        frmModificarAsociarMusculosAEjercicios.setListaMusculos(lista)


        frmTransparente.AgregarContenido(frmModificarEjercicios)
        frmTransparente.Show()

    End Sub


    Private Sub Panel1_Paint(sender As Object, e As PaintEventArgs) Handles Panel1.Paint

    End Sub
End Class
